package slices

import (
	"errors"
	"fmt"
	"math/rand"
	"time"
)

func Hello2(name string) (string, error) {
	if name == "" {
		return name, errors.New("empty name")
	}
	message := fmt.Sprintf(randomFormat2(), name)
	return message, nil
}

// map[key_type]value_type 是一个无序的键值对，可以遍历
func Hellos(names []string) (map[string]string, error) {
	// 使用make创建切片，这个切片目前是空的
	messages := make(map[string]string)

	// for循环，_, name 是 key，value的键值对，此写法相当于，只要name，不要key。
	for _, name := range names {
		message, err := Hello2(name)
		if err != nil {
			// 只要有一个空值,就会直接返回.这个循环也就结束了.
			return nil, err
		}
		//给切片中添加数据，name为key，message为value
		messages[name] = message
	}
	return messages, nil
}

func init() {
	rand.Seed(time.Now().UnixNano())
}

func randomFormat2() string {
	formats := []string{
		"Hi, %v. Welcome!",
		"Great to see you, %v!",
		"Hail, %v! Well met!",
	}
	return formats[rand.Intn(len(formats))]
}
